Telegram Group & Telegram Channel
C++: зачем [[nodiscard]] на bool — и почему это важно

Когда функция возвращает bool, часто возникает соблазн проигнорировать результат:


is_valid(user); // ничего не делает!


А теперь представьте, что is_valid() проверяет критическое условие. Без проверки — баг, возможно даже security-уязвимость.

Чтобы защититься от такого, с C++17 есть [[nodiscard]]:


[[nodiscard]] bool is_valid(const User& user);


Теперь, если результат проигнорировать — компилятор предупредит:


warning: ignoring return value of 'is_valid', declared with attribute 'nodiscard'


Можно ещё улучшить читаемость — использовать [[nodiscard("Must check if user is valid")]], чтобы компилятор написал пояснение в варнинге (начиная с C++20).

🔥 Лайфхак: ставьте [[nodiscard]] на все функции, где игнорирование результата — это почти всегда ошибка. Особенно на:

* проверки (is_...)
* операции с возможным фейлом (try_..., parse_...)
* RAII-объекты с флагами состояния

Не ленитесь — [[nodiscard]] спасает от тонких багов и делает код надёжнее.

➡️ @cpp_geek



tg-me.com/cpp_geek/315
Create:
Last Update:

C++: зачем [[nodiscard]] на bool — и почему это важно

Когда функция возвращает bool, часто возникает соблазн проигнорировать результат:


is_valid(user); // ничего не делает!


А теперь представьте, что is_valid() проверяет критическое условие. Без проверки — баг, возможно даже security-уязвимость.

Чтобы защититься от такого, с C++17 есть [[nodiscard]]:


[[nodiscard]] bool is_valid(const User& user);


Теперь, если результат проигнорировать — компилятор предупредит:


warning: ignoring return value of 'is_valid', declared with attribute 'nodiscard'


Можно ещё улучшить читаемость — использовать [[nodiscard("Must check if user is valid")]], чтобы компилятор написал пояснение в варнинге (начиная с C++20).

🔥 Лайфхак: ставьте [[nodiscard]] на все функции, где игнорирование результата — это почти всегда ошибка. Особенно на:

* проверки (is_...)
* операции с возможным фейлом (try_..., parse_...)
* RAII-объекты с флагами состояния

Не ленитесь — [[nodiscard]] спасает от тонких багов и делает код надёжнее.

➡️ @cpp_geek

BY C++ geek


Warning: Undefined variable $i in /var/www/tg-me/post.php on line 283

Share with your friend now:
tg-me.com/cpp_geek/315

View MORE
Open in Telegram


C geek Telegram | DID YOU KNOW?

Date: |

A project of our size needs at least a few hundred million dollars per year to keep going,” Mr. Durov wrote in his public channel on Telegram late last year. “While doing that, we will remain independent and stay true to our values, redefining how a tech company should operate.

If riding a bucking bronco is your idea of fun, you’re going to love what the stock market has in store. Consider this past week’s ride a preview.The week’s action didn’t look like much, if you didn’t know better. The Dow Jones Industrial Average rose 213.12 points or 0.6%, while the S&P 500 advanced 0.5%, and the Nasdaq Composite ended little changed.

C geek from cn


Telegram C++ geek
FROM USA